package com.settlement.system.mapper;

import com.settlement.system.model.entity.common.TblRrRecordProjectMain;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 收退款-记账项目主表 Mapper 接口
 * @author Ximi
 * @since 2020-07-14
 */
public interface TblRrRecordProjectMainMapper extends BaseMapper {

    /**
     * 根据记账项目获取记账项目
     *
     * @param recordAccountProject 记账项目
     * @return
     */
    public List<TblRrRecordProjectMain> getByRecordAccountProject(String recordAccountProject);

    /**
     * 根据记账项目,获取不重复的凭证类型
     *
     * @param recordAccountProject 记账项目
     * @param channelNo 渠道编码
     * @param billType 账单类型（仅渠道为优购时加入判断条件）
     * @return
     */
    List<TblRrRecordProjectMain> getUnrepeatableVoucherTypes(@Param("recordAccountProject") String recordAccountProject,
                                             @Param("channelNo") String channelNo,@Param("billType") String billType);

    /**
     * 根据记账项目,获取是否参与记账
     *
     * @param recordAccountProject 记账项目
     * @param channelNo 渠道编码
     * @param billType 账单类型
     * @return
     */
    String getIsJoinRecordAccount(@Param("recordAccountProject") String recordAccountProject,
                                        @Param("channelNo") String channelNo,
                                        @Param("billType") String billType);



    /**
     * 根据记账项目和渠道编码,获取收费项目
     * @param recordAccountProject 记账项目
     * @param channelNo 渠道编码
     * @return
     */
    String getChargeProjectByRecordAccountProject(@Param("recordAccountProject") String recordAccountProject,
                                                  @Param("channelNo") String channelNo);

    /**
     * 根据原始记账项目随机获取一条记账项目
     *
     * @param originBillProject 原始记账项目
     * @param billType
     * @param channelNo
     * @return
     */
    public String getByChannelNoAndBillTypeAndOriginBillProject(@Param("channelNo") String channelNo, @Param("billType") String billType, @Param("originBillProject") String originBillProject);

    TblRrRecordProjectMain getByChannelNoAndBillTypeAndNotBillCategory(@Param("channelNo") String channelNo,
                                                       @Param("billType") String billType,
                                                       @Param("notBillCategory") String notBillCategory,
                                                       @Param("notId") String notId);

    /**
     * 用于全参数判断
     * @param params
     * @return
     */
    public List<TblRrRecordProjectMain> selectByParams(@Param("params") TblRrRecordProjectMain params);

}

